# 指定运行此 CMakeLists.txt 所需的 CMake 最低版本为 3.15
# 如果当前使用的 CMake 版本低于 3.15，将会抛出错误
cmake_minimum_required(VERSION 3.15)

# 定义项目名称为 test
# 该名称会影响生成的构建系统中的一些默认设置，例如生成的可执行文件或库的名称前缀等
project(test)

# 以下是两种收集源文件的方式，这里被注释掉了
# 方式一：手动指定源文件列表
# set(SRC add.cpp sub.cpp main.cpp)
# 方式二：使用 aux_source_directory 自动收集指定目录下的所有源文件
# 但 aux_source_directory 不适合复杂项目，因为它会收集所有文件且难以排除不需要的文件
# aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)

# 使用 file(GLOB) 命令收集源文件
# 收集当前 CMakeLists.txt 所在目录下的 src 子目录中所有的 .cpp 文件，并将文件名存储到变量 SRC 中
file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)

# 设置可执行文件的输出路径
# 编译生成的可执行文件将会被放置在 /home/ywx/aa/bb/cc 目录下
set(EXECUTABLE_OUTPUT_PATH /home/ywx/aa/bb/cc)

# 设置 C++ 标准为 C++11
# 这意味着在编译过程中，编译器会按照 C++11 标准来处理代码
set (CMAKE_CXX_STANDARD 11)

# 指定头文件的搜索路径
# 告诉编译器在 ${PROJECT_SOURCE_DIR}/include 目录下查找头文件
include_directories(${PROJECT_SOURCE_DIR}/include)

# 添加可执行目标
# 使用前面收集到的源文件列表 ${SRC} 来生成名为 app 的可执行文件
add_executable(app ${SRC})